package string;

import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test {
    public static void main(String[] args) {
        String s1 = "www.tarena.com.cn";
        String s2 = "http://www.tedu.cn";
        String name1 = getHostName(s1);
        String name2 = getHostName(s2);
        System.out.println(name1);//tarena
        System.out.println(name2);//tedu
    }
///**
// * 获取URL的主机名。
// * 此方法将从给定的URL字符串中提取主机名部分。
// * 注意：方法不进行严格的URL格式验证，只需确保URL以"http://"或"https://"开头。
// *
// * @param url 指定的URL字符串。
// * @return 从URL中提取的主机名。
// * @throws IllegalArgumentException 如果URL不以"http://"或"https://"开头，或无法提取主机名。
// * @throws RuntimeException 如果在解码主机名时发生错误。
// */
//public static String getHostName(String url) {
//    // 验证URL格式，确保其以"http://"或"https://"开头
//    if (!url.startsWith("http://") && !url.startsWith("https://")) {
//        throw new IllegalArgumentException("Invalid URL: URL must start with http:// or https://");
//    }
//
//    // 使用正则表达式来提取URL中的主机名部分
//    String regex = "(?<=://|[^/]+)/([^/.]+)(?=/|$)";
//    Pattern pattern = Pattern.compile(regex);
//    Matcher matcher = pattern.matcher(url);
//
//    // 如果无法找到匹配的主机名，则抛出异常
//    if (!matcher.find()) {
//        throw new IllegalArgumentException("Invalid URL: Unable to extract hostname");
//    }
//
//    // 尝试解码提取的主机名，以确保准确性
//    try {
//        return URLDecoder.decode(matcher.group(1), "UTF-8");
//    } catch (UnsupportedEncodingException e) {
//        // 对于Java支持的编码格式，此处异常发生的可能性极小
//        throw new RuntimeException("Error decoding hostname", e);
//    }
//}




    /**
     * 获取URL的主机名部分。
     *
     * @param url 输入的URL字符串。
     * @return 返回URL中两个"."之间的字符串，即主机名部分。
     */
    public static String getHostName(String url){
        // 查找第一个"."的位置，并在其后开始查找第二个"."的位置
        int index1 = url.indexOf(".")+1;
        int index2 = url.indexOf(".",index1);
        // 截取两个"."之间的字符串
        String sub = url.substring(index1,index2);
        return sub;
    }

}
